home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / sbin / on_ac_power < prev    next >
Text File  |  2008-09-01  |  2KB  |  84 lines

  1. #!/bin/sh
  2. #
  3. # Returns 0 (true) if on AC power
  4. #         1 (false) if not on AC power
  5. #         255 (false) if can't tell
  6. #
  7. # Example shell script:
  8. #     if on_ac_power; then
  9. #       echo We're on AC power
  10. #     else
  11. #       echo Can't say we're on AC power
  12. #     fi
  13.  
  14. set -e
  15.  
  16. # ACPI
  17. #
  18. # This algorithm is complicated by the possibility of multiple AC
  19. # adapters.  We scan the ac_adapter/power_supply directory looking for adapters
  20. # that have known states.  If any adapter is on-line, we return 0.  If
  21. # no adapters are on-line but one or more are off-line, we return 1.
  22. #
  23. if /sbin/acpi_available; then
  24.     OFF_LINE_P=no
  25.     if [ -d /sys/class/power_supply/ ]; then
  26.         for FN in /sys/class/power_supply/*; do
  27.         if test -d "${FN}" && test -r "${FN}/type"; then
  28.             type="$(cat ${FN}/type)"
  29.             if test "x${type}" = "xMains"; then
  30.                 if [ -r "${FN}/online" ]; then
  31.                 online="$(cat ${FN}/online)"
  32.                 [ "$online" = 1 ] && exit 0
  33.                 [ "$online" = 0 ] && OFF_LINE_P=yes
  34.             fi
  35.         fi
  36.         fi
  37.     done
  38.     elif [ -d /proc/acpi/ac_adapter ]; then
  39.     for FN in /proc/acpi/ac_adapter/*; do
  40.         if [ -d "${FN}" ]; then
  41.         if [ -r "${FN}/state" ]; then
  42.             grep --quiet on-line "${FN}/state" && exit 0
  43.             grep --quiet off-line "${FN}/state" && OFF_LINE_P=yes
  44.         elif [ -r "${FN}/status" ]; then
  45.             grep --quiet on-line "${FN}/status" && exit 0
  46.             grep --quiet off-line "${FN}/status" && OFF_LINE_P=yes
  47.         fi
  48.         fi
  49.     done
  50.     fi
  51.     [ "${OFF_LINE_P}" = "yes" ] && exit 1
  52. fi
  53.  
  54. # PMU
  55. if [ -r /proc/pmu/info ]; then
  56.     exec awk </proc/pmu/info '
  57.     BEGIN { FS=":"; ret = 255 }
  58.     /^AC Power.*1$/ { ret = 0; exit }
  59.     /^AC Power.*0$/ { ac = 1 }
  60.         /^Battery.*/ {
  61.                 if ($2 ~/0/ && ac == 1)
  62.                         ret = 0
  63.                 else
  64.                         ret = 1
  65.                 exit }
  66.     END { exit ret }
  67.     '
  68. fi
  69.  
  70. # APM
  71. if [ -r /proc/apm ] && /sbin/apm_available; then
  72.     exec awk </proc/apm '
  73.     BEGIN { ret = 255 }
  74.     /^[0-9.a-zA-Z]* [0-9.]* 0x.. 0x../ {
  75.         if ($4 == "0x01") { ret = 0; exit }
  76.         else if ($4 == "0x00") { ret = 1; exit }
  77.     }
  78.     END { exit ret }
  79.     '
  80. fi
  81.  
  82. # nothing is available
  83. exit 255
  84.